// 积分明细页面逻辑
Page({
  data: {
    totalPoints: 0,
    monthEarned: 0,
    monthUsed: 0,
    currentTab: 'all',
    allDetails: [],
    filteredDetails: [],
    hasMore: true,
    page: 1,
    pageSize: 20
  },

  onLoad() {
    this.loadUserPoints();
    this.loadPointsDetails();
  },

  // 加载用户积分信息
  loadUserPoints() {
    const app = getApp();
    const userInfo = app.globalData.userInfo || {};
    
    // 获取用户积分统计信息
    let token = '';
    try {
      token = wx.getStorageSync('token');
    } catch (e) {
      console.error('获取token失败', e);
    }

    if (token && userInfo.id) {
      wx.showLoading({
        title: '加载中...',
        mask: true
      });

      // 调用后端接口获取用户积分统计
      wx.request({
        url: 'http://localhost:8080/point/flow/user-stats/' + userInfo.id,
        method: 'GET',
        header: {
          'Authorization': token,
          'Content-Type': 'application/json'
        },
        success: (res) => {
          console.log('积分统计API返回数据:', res.data);
          wx.hideLoading();
          if (res.data.code === 200) {
            const stats = res.data.data;
            this.setData({
              totalPoints: stats.currentPoints || 0,
              monthEarned: stats.monthEarned || 0,
              monthUsed: stats.monthUsed || 0
            });
          }
        },
        fail: (err) => {
          wx.hideLoading();
          console.error('获取积分统计失败', err);
          wx.showToast({
            title: '获取积分统计失败',
            icon: 'none'
          });
        }
      });

      // 获取用户本月积分统计
      wx.request({
        url: 'http://localhost:8080/point/flow/user-month-stats/' + userInfo.id,
        method: 'GET',
        header: {
          'Authorization': token,
          'Content-Type': 'application/json'
        },
        success: (res) => {
          if (res.data.code === 200) {
            const monthStats = res.data.data;
            this.setData({
              monthEarned: monthStats.monthEarned || 0,
              monthUsed: monthStats.monthUsed || 0
            });
          }
        },
        fail: (err) => {
          console.error('获取本月积分统计失败', err);
        }
      });
    } else {
      this.setData({
        totalPoints: userInfo.points || userInfo.totalPoint || 0,
        monthEarned: 0,
        monthUsed: 0
      });
    }
  },

  // 加载积分明细
  loadPointsDetails() {
    const app = getApp();
    const userInfo = app.globalData.userInfo || {};
    
    if (!userInfo.id) {
      wx.showToast({
        title: '请先登录',
        icon: 'none'
      });
      return;
    }

    let token = '';
    try {
      token = wx.getStorageSync('token');
    } catch (e) {
      console.error('获取token失败', e);
    }

    wx.showLoading({
      title: '加载中...',
      mask: true
    });

    // 调用后端接口获取用户积分流水完整信息
    wx.request({
      url: 'http://localhost:8080/point/flow/complete-by-user/' + userInfo.id,
      method: 'GET',
      header: {
        'Authorization': token,
        'Content-Type': 'application/json'
      },
      success: (res) => {
        wx.hideLoading();
        console.log('积分流水API返回数据:', res.data);
        
        if (res.data.code === 200) {
          const details = res.data.data || [];
          // 转换数据格式
          const formattedDetails = details.map(item => ({
            id: item.id,
            type: (item.point || 0) > 0 ? 'earn' : 'use',
            icon: this.getTypeIcon(item.pointRule?.typeName),
            title: item.pointRule?.typeName || '积分变动',
            desc: this.getTypeDescription(item),
            points: Math.abs(item.point || 0),
            time: item.createTime || '',
            balance: item.balance || 0,
            ruleType: item.pointRule?.typeName || '',
            // 保存原始数据用于详情显示
            originalData: item
          }));

          console.log('转换后的积分明细:', formattedDetails);

          this.setData({
            allDetails: formattedDetails,
            filteredDetails: formattedDetails,
            hasMore: false // 这个接口返回所有数据，不需要分页
          });

          this.filterDetails();
        } else {
          wx.showToast({
            title: res.data.msg || '获取积分明细失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        wx.hideLoading();
        console.error('获取积分明细失败', err);
        wx.showToast({
          title: '获取积分明细失败',
          icon: 'none'
        });
      }
    });
  },

  // 获取类型图标
  getTypeIcon(typeName) {
    const iconMap = {
      // 获得积分类型
      '评论互动': '💬',
      '发布菜谱': '📝',
      '发布作品': '🎨',
      '每日签到': '📅',
      '邀请好友': '👥',
      '积分充值': '💰',
      '活动奖励': '🏆',
      '任务完成': '✅',
      
      // 使用积分类型
      '购买商品': '🛒',
      '兑换商品': '🎁',
      '积分扣除': '➖',
      '服务费用': '💳',
      '惩罚扣除': '⚠️',
      
      // 默认图标
      'earn': '➕',
      'use': '➖'
    };
    
    // 如果没有找到对应的图标，根据积分正负值返回默认图标
    if (!typeName) {
      return '📊';
    }
    
    return iconMap[typeName] || '📊';
  },

  // 获取类型描述
  getTypeDescription(item) {
    // 如果有兑换订单信息
    if (item.exchangeOrder && item.exchangeOrder.goodsName) {
      return `兑换商品：${item.exchangeOrder.goodsName}`;
    }
    
    // 如果有评论信息
    if (item.comments && item.comments.content) {
      return `评论：${item.comments.content}`;
    }
    
    // 如果有菜谱信息
    if (item.recipes && item.recipes.title) {
      return `菜谱：${item.recipes.title}`;
    }
    
    // 如果有作品信息
    if (item.works && item.works.title) {
      return `作品：${item.works.title}`;
    }
    
    // 如果有积分规则描述
    if (item.pointRule && item.pointRule.description) {
      return item.pointRule.description;
    }
    
    // 默认描述
    if (item.point > 0) {
      return '获得积分';
    } else if (item.point < 0) {
      return '使用积分';
    } else {
      return '积分变动';
    }
  },

  // 切换标签
  switchTab(e) {
    const tab = e.currentTarget.dataset.tab;
    this.setData({
      currentTab: tab
    });
    this.filterDetails();
  },

  // 筛选明细
  filterDetails() {
    const { currentTab, allDetails } = this.data;
    let filtered = [];

    switch (currentTab) {
      case 'earn':
        filtered = allDetails.filter(item => item.type === 'earn');
        break;
      case 'use':
        filtered = allDetails.filter(item => item.type === 'use');
        break;
      default:
        filtered = allDetails;
    }

    this.setData({
      filteredDetails: filtered
    });
  },

  // 加载更多
  loadMore() {
    // 新接口返回所有数据，不需要分页加载
    wx.showToast({
      title: '已显示全部数据',
      icon: 'none'
    });
  },

  // 分享
  onShareAppMessage() {
    return {
      title: '积分明细',
      path: '/my/pages/points-detail/points-detail'
    };
  },

  // 刷新数据
  refreshData() {
    wx.showLoading({
      title: '刷新中...',
      mask: true
    });
    
    // 重新加载积分统计和明细
    this.loadUserPoints();
    this.loadPointsDetails();
    
    setTimeout(() => {
      wx.hideLoading();
      wx.showToast({
        title: '刷新成功',
        icon: 'success'
      });
    }, 1000);
  }
}); 